﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.UI.DataVisualization.Charting;
using System.Drawing;
using System.ComponentModel;
using System.Xml.Linq;
using Atendex.Dominio;
using Atendex.Infraestrutura.Repositórios;

namespace Atendex.Web
{
    public partial class Relatorios : System.Web.UI.Page
    {
        DataTable dt;

        protected void Page_Load(object sender, EventArgs e)
        {
            dt = new DataTable();
            dt.Columns.Add(new DataColumn("Atendente"));
            dt.Columns.Add(new DataColumn("Atendimentos", typeof(int)));

            RepositorioAtendente repAtendente = new RepositorioAtendente();
            IAtendente[] atendentes = repAtendente.ObtemTodos();

            foreach (IAtendente atendente in atendentes)
            {
                RepositorioAtendimento repAtendimento = new RepositorioAtendimento();
                IAtendimento[] atendimentos = repAtendimento.ObtemPorPropriedade("Atendente", atendente);

                if (calDataInicio.SelectedDate != DateTime.MinValue)
                {
                    if (calDataFim.SelectedDate != DateTime.MinValue)
                    {
                        var atendimentosData = from IAtendimento atendimento in atendimentos
                                               where atendimento.DataInicio >= calDataInicio.SelectedDate
                                               && atendimento.DataInicio <= calDataFim.SelectedDate
                                               select atendimento;
                        atendimentos = atendimentosData.ToArray<IAtendimento>();
                    }
                    else
                    {
                        var atendimentosData = from IAtendimento atendimento in atendimentos
                                               where atendimento.DataInicio >= calDataInicio.SelectedDate
                                               select atendimento;
                        if (atendimentosData.Count() > 0)
                            atendimentos = atendimentosData.ToArray<IAtendimento>();
                    }
                }
                else
                {
                    if (calDataFim.SelectedDate != DateTime.MinValue)
                    {
                        var atendimentosData = from IAtendimento atendimento in atendimentos
                                               where atendimento.DataInicio <= calDataFim.SelectedDate
                                               select atendimento;
                        if (atendimentosData.Count() > 0)
                            atendimentos = atendimentosData.ToArray<IAtendimento>();
                    }
                }

                int i = 0;
                DataRow dr = dt.NewRow();
                dr["Atendente"] = atendente.Nome;

                foreach (IAtendimento atendimento in atendimentos)                    
                    dr["Atendimentos"] = ++i;

                dt.Rows.Add(dr);

                Series serie = new Series(atendente.Nome);
                serie.Points.AddY(Convert.ToDouble(dr["Atendimentos"].ToString()));

                crtGrafico.Series.Add(serie);
            }

            grvDados.DataSource = dt;
            grvDados.DataBind();
        }
    }
}
